home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / powernowd / cpufreq-detect.sh
Linux/UNIX/POSIX Shell Script  |  2008-09-15  |  3KB  |  99 lines

  1. #!/bin/sh
  2.  
  3. if /usr/sbin/laptop-detect; then LAPTOP=1; fi
  4. CPUINFO=/proc/cpuinfo
  5. IOPORTS=/proc/ioports
  6.  
  7. if [ ! -f $CPUINFO ] ; then
  8.     echo $CPUINFO not detected... >2
  9.     exit 1
  10. fi
  11.  
  12. MODEL_NAME=`grep '^model name' "$CPUINFO" | head -1 | sed -e 's/^.*: //;'`
  13. CPU=`grep -E '^cpud[^:]+:' "$CPUINFO" | head -1 | sed -e 's/^.*: //;'`
  14. VENDOR_ID=`grep -E '^vendor_id[^:]+:' "$CPUINFO" | head -1 | sed -e 's/^.*: //;'`
  15. CPU_FAMILY=$(sed -e '/^cpu family/ {s/.*: //;p;Q};d' $CPUINFO)
  16.  
  17. MODULE=none
  18. MODULE_FALLBACK=acpi-cpufreq
  19.  
  20. # Two modules for PIII-M depending the chipset.
  21. # modprobe speedstep-ich$EXT || modprobe speestep-smi$EXT  would be another way
  22. if [ -f $IOPORTS ] && grep -q 'Intel .*ICH' $IOPORTS ; then
  23.   PIII_MODULE=speedstep-ich
  24. else
  25.   PIII_MODULE=speedstep-smi
  26. fi
  27.  
  28. case "$VENDOR_ID" in
  29.     GenuineIntel*)
  30.     # If the CPU has the est flag, it supports enhanced speedstep and should
  31.     # use the speedstep-centrino driver
  32.     if [ "`grep est $CPUINFO`" ]; then
  33.     MODULE=speedstep-centrino;
  34.     elif [ $CPU_FAMILY = 15 ]; then
  35.     # Right. Check if it's a P4 without est.
  36.     # Could be speedstep-ich, or could be p4-clockmod. 
  37.     MODULE=speedstep-ich;
  38.     # Disabled for now - the latency tends to be bad enough to make it
  39.     # fairly pointless. 
  40.     # echo "FREQDRIVER=p4-clockmod" >/etc/default/powernowd
  41.     # to override this
  42. #    if [ $LAPTOP = "1" ]; then
  43. #        MODULE_FALLBACK=p4-clockmod;
  44. #    fi
  45.     else
  46.     # So it doesn't have Enhanced Speedstep, and it's not a P4. It could be 
  47.     # a Speedstep PIII, or it may be unsupported. There's no terribly good
  48.     # programmatic way of telling.
  49.     case "$MODEL_NAME" in
  50.         Intel\(R\)\ Pentium\(R\)\ III\ Mobile\ CPU*)
  51.         MODULE=$PIII_MODULE ;;
  52.         
  53.         # JD: says this works with   cpufreq_userspace
  54.         Mobile\ Intel\(R\)\ Pentium\(R\)\ III\ CPU\ -\ M*)
  55.         MODULE=$PIII_MODULE ;;
  56.         
  57.         # https://bugzilla.ubuntu.com/show_bug.cgi?id=4262
  58.         # UNCONFIRMED
  59.         Pentium\ III\ \(Coppermine\)*)
  60.         MODULE=$PIII_MODULE
  61.         ;;
  62.     esac
  63.     fi
  64.     ;;
  65.     AuthenticAMD*)
  66.     # Hurrah. This is nice and easy.
  67.     case $CPU_FAMILY in
  68.     5)
  69.     # K6
  70.     MODULE=powernow-k6
  71.     ;;
  72.     6)
  73.     # K7
  74.     MODULE=powernow-k7
  75.     ;;
  76.     15|16|17)
  77.     # K8
  78.     MODULE=powernow-k8
  79.     ;;
  80.     esac
  81.     ;;
  82.     CentaurHauls*)
  83.     # VIA
  84.     # If the CPU has the est flag, it supports enhanced powersaver and should
  85.     # use the e_powersaver driver
  86.     if [ "`grep est $CPUINFO`" ]; then
  87.         MODULE=e_powersaver;
  88.     elif [ $CPU_FAMILY = 6 ]; then
  89.     MODULE=longhaul;
  90.     fi
  91.     ;;    
  92.     GenuineTMx86*)
  93.     # Transmeta
  94.     if [ "`grep longrun $CPUINFO`" ]; then
  95.     MODULE=longrun
  96.     fi
  97.     ;;    
  98. esac
  99.